1. Field of the Invention
The present invention relates to adjusting the frame rates of a computer mouse, and more particularly, to a method for tracking the acceleration of a computer mouse, selecting a frame rate according to the acceleration, and directly switching to the selected frame rate.
2. Description of the Prior Art
Both standard and gaming mice are rated in frames per second (fps), which translates to the number of frames captured per second for detecting and calculating movement of the mouse. Each time a frame is captured, the mouse computes motion between a current frame and a previous frame. In addition, the mouse will report to (update) a USB at regular intervals, which is called the report rate. The mouse can then analyze all reported frames to estimate its position. The report rate usually depends on the mouse application, and is not dependent upon the frame rate. For example, a report rate of a standard mouse used in a home computer may be 8 ms, whereas a report rate of a gaming mouse may be as fast as 1 ms. If a gaming mouse has a frame rate of 10,000 fps and a report rate of 1 ms, there will be 10 frames of motion data for every USB report.
As the tracking velocity of the mouse increases, the distance between consecutive captured images increases. When two consecutive captured images are a particular distance apart, the mouse is unable to perform correlation between the two images. This is also due to the fact that most mouse sensors will only perform a correlation search over a small region in order to save power.
By increasing the frame rate when the mouse is moving at a higher velocity such that consecutive capture images are close enough for the mouse sensor to perform correlation, the mouse is able to track user motion accurately without losing track of its position. The high frame rate also prepares the mouse to track motion correctly in the event of sudden high acceleration. Please note that the USB update (the report rate) will not change. As long as the mouse sensor frame rate is faster than the report rate, the above benefits can be achieved.
In order to determine when the frame rate should be increased, the velocity of the mouse can be analyzed, and the frame rate increased when the velocity exceeds a certain threshold. Please refer to FIG. 1A, which is an illustration of how an average velocity of a frame can be determined. As illustrated in the diagram, Frame A is captured at a first time t1, and Frame B is captured at a second time t2. The frame period t is therefore equivalent to t2−t1, but can also be known by the frame rate at which the mouse is operating. According to a first reported position of the mouse at Frame A and a second reported position of the mouse at Frame B, a mouse motion delta, D, of the mouse can be known. The average velocity of Frame B is therefore calculated as V=D/t.
A computer mouse typically has a few different frame rates for collecting data. Example frame rates are as follows for a mouse that has four different frame rates:
Frame Rate A—FR_A (1000 fps)
Frame Rate B—FR_B (2000 fps)
Frame Rate C—FR_C (3000 fps)
Frame Rate D—FR_D (4000 fps)
As described in the above, the slower frame rates will be used at lower velocities of the mouse and the higher frame rates will be used when the mouse moves at a higher velocity. The slowest frame rate, FR_A, will therefore be used when the mouse is static, and FR_D will be used at the mouse's maximum achievable velocity.
In the conventional art, when the mouse is moved by a user from a static condition to its maximum velocity, the frame rate will increase in incremental steps, i.e. FR_A→FR_B→FR_C→FR_D. If the user moves the mouse at a high acceleration from the static condition, the large increase in velocity will not be reflected immediately, as the conventional method does not allow for the frame rate to directly jump from FR_A to FR_D. The user will see this slow increase in frame rate as a slow response from the mouse. In a worst case, the mouse may stop tracking altogether, as the collection of data is unable to be correlated with the motion of the mouse.
Another conventional solution therefore always operates the mouse at the highest frame rate, FR_D. Although this solves the above-mentioned problem, this method consumes a lot of power.